#pragma once

#include <memory>
#include <string>

class BaseManager;
using BaseManagerPtr = std::shared_ptr<BaseManager>;

class BaseManager
{
public:
    BaseManager(const std::string& name = "") : m_name(name) {}
    virtual ~BaseManager(){}

    virtual bool Init() = 0;
    virtual void Destroy(){}

    std::string GetName()
    {
        return m_name;
    }

protected:
    std::string m_name;
};